﻿//*** Guidance generated code ***//
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;

namespace $safeprojectname$
{
    /// <summary>
    ///     IEntityDao provides getters as the IReadDao and setters as the IWriteDao.
    ///     This object should be the one and only way how to transfer
    ///     the templated entity 'T' from and to the data-storage.
    /// </summary>
    /// <typeparam name = "T">templated entity which has its persisted representation</typeparam>
    /// <typeparam name = "TID">unique identifier. suggested types are decimal, int, short, long, Guid and string</typeparam>
    /// <typeparam name = "TFilter"></typeparam>
    public interface IEntityDao<T, in TID, in TFilter> : IReadDao<T, TID, TFilter>, IWriteDao<T, TID>
        where T : class, IPersistentObjectWithTypedId<TID>
        where TFilter : class, IFilter<TID> { }
}